<template>
    <Card>
        <div class="contract-detial-btns top-btn">
            <Button type="primary" @click="back">返回</Button>
            <template v-if="!isReadOnly">
                <template v-if="isApprove">
                    <Button type="primary" @click="approve('pass')">审核通过</Button>
                    <Button type="primary" @click="approve('return')">退件</Button>
                    <Button type="primary" @click="approve('reject')">拒绝</Button>
                </template>
                <template v-else-if="!isApproved">
                    <Button type="primary" @click="save">保存</Button>
                    <Button type="primary" @click="submit">提交</Button>
                </template>
            </template>
        </div>
        <div class="contract-detail-collapse">
            <Collapse v-model="openPanel">
                <Panel name="1" v-if="isApprove || isApproved && !this.Obj.roleType">
                    日志
                    <div class="content" slot="content" v-if="!this.Obj.roleType">
                        <approveHistory :Obj="Obj"/>
                    </div>
                </Panel>
                <Panel name="2">
                    基本信息
                    <div class="content" slot="content">
                        <BaseInfo ref="baseInfo" :formData="pageInfo"/>
                    </div>
                </Panel>
                <Panel name="3">
                    合同信息
                    <div class="content" slot="content">
                        <contractInfo ref="contractInfo" :Obj="Obj"/>
                    </div>
                </Panel>
                <!--            <Panel name="4" v-if="!isSP">-->
                <!--                金融产品-->
                <!--                <div class="content" slot="content"  >-->
                <!--                    <FinanceInfo :Obj="Obj" />-->
                <!--                </div>-->
                <!--            </Panel>-->
                <Panel name="5">
                    业务办理
                    <div class="content" slot="content">
                        <Business
                            ref="business"
                            :Obj="Obj"
                            :pageParams="pageInfo"
                            :dataDict="dataDict"
                            :isApprove="isApprove"
                            :isApproved="isApproved"
                            :isReadOnly="isReadOnly"
                            :disableSubject="disableSubject"
                            @saveDataFn="saveDataFn"
                            @submitDataFn="submitDataFn"
                            @childBusinessForm="childBusinessForm"
                            @closeSpin="closeSpin"
                            @baseInfo="setBaseInfo"
                        />
                    </div>
                </Panel>
            </Collapse>
        </div>
    </Card>
</template>
<script>
    import moment from "moment";
    import {
        changeContactChange,
        changeContactSubmit,
        saveProposalApplicationInfo
    } from "_p/basic/api/contract/post-loan-info-change/change-contact";

    import {deepClone} from "@/libs/utils/ObjectClone";

    // 日志
    import approveHistory from "_p/basic/pages/contract/common/approve-history/approve-history";
    // 金融产品
    import FinanceInfo from "_p/basic/pages/contract/common/finance-info/finance-info";
    // 业务办理
    import Business from "_p/basic/pages/contract/post-loan-info-change/change-contact-detial/Business";
    // 合同信息
    import contractInfo from "_p/basic/pages/contract/common/contract-info/contract-info";
    // 基本信息
    import BaseInfo from "_p/basic/pages/contract/common/base-info";
    // 当前用户
    import ContractCurrentUser from "_p/basic/pages/contract/common/current-user/contractCurrentUser";
    import {findByContractNo} from "_p/basic/api/contract/activated-case";

    export default {
        name: "ChangeContactDetial",
        components: {
            approveHistory,
            FinanceInfo,
            contractInfo,
            BaseInfo,
            ContractCurrentUser,
            Business
        },
        props: {
            Obj: {
                //caseNo, contractNo, roleType
                type: Object,
                required: true
            },
            spinShow: {
                type: Boolean,
                required: true
            },
            //是否是审批页面
            isApprove: {
                type: Boolean,
                required: true
            },
            //是否 审批完成
            isApproved: {
                type: Boolean,
                required: true
            },
            isReadOnly: {
                type: Boolean,
                default: false
            },
            pageParams: {
                type: Object,
                required: true
            },
            dataSource:{
                type: String,
                required: true
            },
            //合同号
            contractNo: {
                type: String,
                required: true
            },
            dataDict: {
                type: Object
            },
            // userInfo: {
            //     type: Object,
            //     required: true
            // },
            businessSource: {
                type: String,
                required: true
            },
            // roleType: {
            //     type: Array,
            //     required: true
            // }
        },
        data() {
            return {
                disableSubject: false,
                loading: true,
                openPanel: [0, 2, 3, 4, 5, 6],
                readOnly: null,
                approvalOperating: "", //审批结果
                approveType: null, //
                pageInfo: this.pageParams
            };
        },

        mounted() {
            this.init();
        },
        methods: {
            init() {
                if (this.$refs.baseInfo) {
                    this.$refs.baseInfo.formData = Object.assign(
                        {},
                        this.$refs.baseInfo.formData,
                        this.pageInfo
                    );
                }
            },
            save() {


                if (this.$refs.business.formData) {

                    // console.log(this.$refs.business.formData,"this.$refs.business.formData")
                    // if (this.$refs.business.formData.oldPhone === this.$refs.business.formData.newPhone || this.$refs.business.formData.newWorkPhone === this.$refs.business.formData.oldWorkPhone || this.$refs.business.formData.newHomeContact === this.$refs.business.formData.oldHomeContact || this.$refs.business.formData.newOtherContact === this.$refs.business.formData.oldOtherContact){
                    //     this.$Message.error("新电话与旧电话不能一样!");
                    //     return;
                    // }
                    this.showSpin();
                    this.$refs.business.formValidate("saveDataFn");
                }
            },
            submit() {
                let params = {
                    contractBusiness: ["cancelContract"],
                    contractNo: this.contractNo,
                    handleBusiness: "",
                    dataSource: this.dataSource,
                };
                // console.log(this.$refs.business.formData,"this.$refs.business.formData")
                // if (this.$refs.business.formData.oldPhone === this.$refs.business.formData.newPhone || this.$refs.business.formData.newWorkPhone === this.$refs.business.formData.oldWorkPhone || this.$refs.business.formData.newHomeContact === this.$refs.business.formData.oldHomeContact || this.$refs.business.formData.newOtherContact === this.$refs.business.formData.oldOtherContact){
                //     this.$Message.error("新电话与旧电话不能一样!");
                //     return;
                // }
                findByContractNo(params).then(res => {

                    if (res.code === "0000") {
                        if (res.msg === "success") {
                            this.$refs.business.formValidate("submitDataFn");
                        }
                    }
                });
            },
            // 审核等按钮
            approve(name) {
                if (!name) return;
                let t, val;
                switch (name) {
                    case "pass":
                        t = "审核通过";
                        val = "suggestCheckF";
                        break;
                    case "return":
                        t = "退件";
                        val = "sendBack";
                        break;
                    case "reject":
                        t = "拒绝";
                        val = "suggestRejectF";
                        break;
                }
                this.approveType = name;
                this.$Modal.confirm({
                    title: `确认${t}？`,
                    onOk: () => {
                        if (this.$refs.business) {
                            this.showSpin();
                            this.approvalOperating = val;
                            // 验证 business 组件数据 给下一个方法
                            this.$refs.business.formValidate("childBusinessForm");
                        }
                    }
                });
            },
            // 保存 请求
            saveDataFn(data) {
                if (!data) return;
                let d = this.formatData(data);
                console.log(d,"d")

                changeContactChange(d)
                    .then(res => {
                        this.$emit("closeSpin");
                        if (res.code === "0000") {
                            this.$Message.success("保存成功!");
                            this.pageInfo = res.data;
                            // this.$refs.baseInfo.formData = res.data;
                            this.disableSubject = true;
                        }
                    })
                    .catch(e => {
                        this.$emit("closeSpin");
                    });
            },
            //提交 请求
            submitDataFn(data) {
                let val = "suggestCheckF";
                let d = this.formatData(data);
                // console.log(d,"d")
                // if (d.oldPhone === d.newPhone || d.newWorkPhone === d.oldWorkPhone || d.newHomeContact === d.oldHomeContact || d.newOtherContact === d.oldOtherContact){
                //     this.$Message.error("新电话与旧电话不能一样!");
                //     return;
                // }
                d.approvalOperating = val;
                this.$Modal.confirm({
                    title: "确认提交？",
                    onOk: () => {
                        this.submitOverpayment(d);
                    }
                });
            },
            submitOverpayment(data) {
                if (!data) return;
                let d = this.formatData(data);
                changeContactSubmit(d)
                    .then(res => {
                        this.$emit("closeSpin");
                        if (res.code === "0000") {
                            this.$Message.success("提交成功!");
                            this.back();
                        }
                    })
                    .catch(e => {
                        this.$emit("closeSpin");
                    });
            },
            // 审批 请求
            // Business 组件数据
            childBusinessForm(data) {
                if (!data) return;
                // let bussiness = this.formatData(data);
                // 验证 contractCurrentUser 组件数据 传给下个方法
                this.$refs.contractCurrentUser.formValidate(
                    "childUserForm",
                    this.formatData(data),
                    this.approveType
                );
            },
            // contractCurrentUser 组件数据
            childUserForm(data) {
                if (!data) return;
                let d = Object.assign({}, data, {
                    approvalOperating: this.approvalOperating
                });
                saveProposalApplicationInfo(d)
                    .then(res => {
                        this.$emit("closeSpin");
                        if (res.code === "0000") {
                            this.$Message.success("成功!");
                            this.back();
                        }
                    })
                    .catch(e => {
                        this.$emit("closeSpin");
                    });
            },

            // 格式化
            formatData(data) {
                if (!data) return {};
                let d = Object.assign({businessSource: this.businessSource}, this.pageInfo, data);
                d.custName = this.$refs.contractInfo.formData.basicCustBaseInfo.custName;
                if (d.createTime instanceof Date)
                    d.createTime = moment(d.createTime).format(
                        "YYYY-MM-DD HH:mm:ss"
                    );
                if (d.endDate instanceof Date)
                    d.endDate = moment(d.endDate).format("YYYY-MM-DD HH:mm:ss");
                return d;
            },
            setBaseInfo(data) {
                const {caseNo, applyBy, applyDate} = data;
                let obj = {
                    caseNo: this.pageInfo.caseNo || caseNo,
                    applyBy: this.pageInfo.applyBy || applyBy,
                    applyDate: this.pageInfo.applyDate || applyDate
                }
                this.pageInfo = Object.assign({}, this.pageInfo, obj)
            },
            showSpin() {
                this.$emit("showSpin");
            },
            closeSpin() {
                this.$emit("closeSpin");
            },
            back() {
                this.$emit("back");
            }
        }
    };
</script>
